// 高阶函数？
// 1.一个函数的参数是函数
// 2.函数的返回值是函数

// 使用高阶函数 就是在函数功能不满足的情况下 使用高阶函数 拓展原有功能
function coreFn(...arg){
    // 实现核心逻辑
    console.log('core Fn',...arg);
}
Function.prototype.before = function(beforeFn){
    return(...args)=>{ // 使用箭头函数是因为 this指的是beforeFn
        beforeFn();
        this(...args);
    }
}

let newFn = coreFn.before(()=>{
    console.log('before fn')
}) 


newFn(1,2,3); // 分别打印 'before fn'  'core Fn'



